{
  // 😎 1. 假如我声明一个fn，
  //  我希望参数为string，时返回值为string
  //  我希望参数为number，是返回值为number
  function fn(name: string | number): string | number {
    return name;
  }

  const result = fn('123');
  // 1.2 ts推论认是逻辑或，ts不敢确定是string。
  // result.startsW

  // 2. 需要根据调用-参数类型，确定返回值类型。
  // 传any算了？ 不行，

  // 2.1 再来看一下，它为什么就能，根据传参类型，确定返回值类型？
  const list = new Array('1');
  // list.push(1);
  const list2 = new Array(2, 2, 3); // 💥 只传一个数字时，代表数组长度
  // list2.push('1')

  // 3. 如何让ts根据fn调用时传入的值，确定返回值类型？
  // 🔑 就要靠泛型了。泛型的作用，调用时才能确定类型是什么
}
